Perfctl, un malware Linux tenace

Perfctl, un malware Linux tenace

Perfctl storm

13

Perfctl, un malware Linux tenace

Hier soir, les chercheurs de la société Aqua Security ont publié un article détaillé sur le malware Perfctl. Ils y mettent en garde les utilisateurs contre ses capacités, qui allient une grande discrétion à une persistance tenace. Sa détection n’est pas assurée et les chercheurs estiment que le nombre de configurations vulnérables se compte en millions.

Le nom du malware, donné par les chercheurs, est un agrégat de Perf, un outil d’analyse des performances, et de ctl, une abréviation courante pour les outils en ligne de commande. Selon Aqua Security, ce logiciel malveillant circule depuis au moins 2021 et serait présent sur au moins plusieurs milliers de configurations, pour l’essentiel des serveurs.

Un roi de l’évasion et de la persistance

Perfctl dispose de nombreuses capacités. Sitôt installé sur une machine, il supprime son binaire et continue de fonctionner comme service en arrière-plan. Parallèlement, il se copie depuis la mémoire vers plusieurs emplacements du stockage. Il se cache derrière des noms a priori anodins, semblables à des fichiers système, pour tromper la vigilance. Aqua Security a résumé ces noms dans un graphique :

Source : Aqua Security

Le malware modifie également le script ~/.profile (configuration de l’environnement à la connexion de l’utilisateur) pour assurer son exécution lors de l’ouverture de session. Il dispose aussi d’un rootkit s’exécutant à tous les redémarrages de l’ordinateur.

Perfctl est en outre discret. En plus des mesures citées précédemment, il peut mettre fin automatiquement à toutes ses activités « bruyantes » quand un utilisateur se connecte sur la machine. Ses différents composants communiquent en interne en ouvrant des sockets Unix et en externe via des relais Tor.

Il sait aussi manipuler le processus pcap_loop (via une technique d’interception) pour empêcher les outils d’administration d’enregistrer le trafic qui pourrait être perçu comme malveillant. Le détournement de pcap_loop participe également à la persistance, en permettant aux activités malveillantes de se poursuivre quand les charges utiles ont été détectées et supprimées. En outre, Perfctl peut supprimer les erreurs mesg pour éviter que des avertissements apparaissent pendant l’exécution.

Une provenance incertaine

Un grand flou entoure Perfctl, en dépit des nombreux détails découverts par les chercheurs. Ils ne savent ni d’où il vient, ni quel groupe malveillant pourrait en être à l’origine. Aqua Security estime cependant que le degré de technicité est très élevé. L’accumulation des méthodes prouve que le ou les auteurs connaissent parfaitement le fonctionnement de Linux.

Il est tout autant difficile de savoir combien de machines sont infectées. Perfctl cherche en premier lieu à exploiter certaines failles, dont CVE-2023-33426, une vulnérabilité critique de dangerosité maximale (10 sur 10) dans Apache RocketMQ. Même s’il n’en trouve pas, il peut quand même passer par d’autres moyens, en exploitant plus de 20 000 erreurs courantes dans les configurations. Dans ce cas, il tente d’exploiter la faille CVE-2021-4043 dans Gpac pour obtenir les droits root.

Source : Aqua Security

La détection est d’autant plus difficile que Perfctl arrête ses activités les plus visibles dès qu’une session est ouverte, comme déjà précisé. Les chercheurs mettent en avant de nombreuses conversations sur des comportements étranges de leurs serveurs, notamment sur Reddit. « Je n'ai pris conscience de l'existence du logiciel malveillant que lorsque ma configuration de surveillance m'a alerté de l'utilisation à 100 % du processeur. Cependant, le processus s'arrêtait immédiatement lorsque je me connectais via SSH ou la console. Dès que je me déconnecte, le logiciel malveillant reprend son cours en quelques secondes ou minutes », écrit ainsi un administrateur.

On trouve d’autres discussions du même type, dans diverses langues, sur des sites comme Stack Overflow, forobeta, brainycp ou encore Proxmox. Sur ces témoignages, les chercheurs d’Aqua ne peuvent être certains qu’il s’agit bien de Perfctl, mais ils indiquent que les symptômes correspondent.

À quoi sert Perfctl ?

Le malware est tenace et discret, mais à quelles fins est-il utilisé ? Les pics de consommation CPU donnent un indice : il sert essentiellement à miner de la cryptomonnaie Monero en installant le cryptomineur XMRIG. Les envolées à 100 % sur le CPU viennent du minage, extrêmement gourmand en puissance de calcul. Comme vu, l’activité s’arrête dès que l’on se connecte à une session.

Perfctl peut également réaliser du proxy-jacking. Il réutilise ainsi la bande passante non exploitée à d’autres usages. Dans un cas comme dans l’autre, la motivation est clairement financière.

En dépit de ces deux activités, Perfctl est décrit par les chercheurs comme très polyvalent. En fonction de la charge utile envoyée par le serveur de commande et contrôle (C2C), il peut se livrer à d’autres actions malveillantes, comme l’exfiltration de données.

S’en débarrasser n’est pas simple

On ne sait pas vraiment si les antivirus sont capables actuellement de détecter Perfctl et de le supprimer. Les chercheurs d’Aqua Security fournissent quand même une série de conseils, notamment sur la manière de reconnaitre la présence du malware.

Il y a deux principaux critères pour établir la présence du malware. D’abord, les pics d’activité CPU (ou des ralentissements a priori inexpliqués), particulièrement sur des processus nommés httpd et sh. Ensuite, la présence de binaires suspects dans les dossiers /tmp, /usr et /root. Des noms comme perfctl, sh, libpprocps.so, perfcc et libfsnkdev.so sont donnés en exemples.

Aqua recommande en outre de vérifier les journaux système à la recherche de modifications sur les fichiers ~/.profile, et /etc/ld.so.preload, ainsi que la surveillance des modifications à certains utilitaires système (comme ldd, top, lsof et crontab).

Les chercheurs recommandent également plusieurs mesures d’atténuation, dont la plus importante est de mettre à jour les composants du serveur, en particulier ceux touchés par des failles exploitées. Aqua suggère aussi de restreindre l’exécution des fichiers dans les répertoires accessibles en écriture, de désactiver les services inutilisés, d’appliquer une gestion stricte des privilèges et, bien sûr, de déployer des outils de sécurité capables de détecter des rootkits et malwares sans fichier.

Aqua estime qu’en tenant compte de la prévalence des failles ciblées et non corrigées, des millions de machines sont actuellement vulnérables à ce malware.

Commentaires (13)


sympa le bestiau !
Peut-être que CrowdStrike peut s'en occuper :troll:
aquasec est spécialisée dans la sécurisation du cloud et des conteneurs. Pas très rassurant car on peut imaginer que ce machin se retrouve dans tout un tas d'images Docker, par exemple.
Ca parait peu probable, il faut poser la question au responsable de l'intégration dans une image docker. Par ailleurs quand même ce serait le cas, c'est la sécurité de l'OS qui fera barrière pour l'escalation de privilège (mais pas pour la conso CPU ce qui est moins grave).

Carpette

Ca parait peu probable, il faut poser la question au responsable de l'intégration dans une image docker. Par ailleurs quand même ce serait le cas, c'est la sécurité de l'OS qui fera barrière pour l'escalation de privilège (mais pas pour la conso CPU ce qui est moins grave).
Les images Docker sont utilisées depuis longtemps pour héberger des malwares, souvent des cryptomineurs. Dans le papier, il me semble comprendre que les traces du malware ont été cherchées dans un conteneur (cf. figure 20).
La question que je me pose c'est : comment il s'installe initialement ? J'ai cru comprendre que personne n'en sait rien.

Y a-t-il un centre de commandement qui écoute les IP exposées et utilise des failles de protocoles comme SSH, Apache, Nginx, etc ?

Infiltration type worm ?

Supply chain ?

Infection de dépôt logiciels ?

Au vu de ses capacités, il est forcément installé avec des droits root. Donc soit il utilise une faille d'escalade de privilèges, soit il est amené au moment d'une opération parfaitement justifiée.

Les conseils prodigués sont effectivement les gestes habituellement recommandés : isolation, process qui ne tournent pas en root quand c'est pas justifié (container inclus, pas de putain de user root !), least privilege, isoler son réseau (entrée et sortie), mettre du WAF, maintenir le système ET les middlewares à jour, etc. Hélas, la réputation fausse de "Linux = pas de malware" est encore bien trop ancrée dans les esprits, cette désinformation créé des ravages en matière de sécurité IT.
Je parie un billet que c'est encore un service qui tourne généralement en root.
Cela dit, le truc chiant avec les produits Apache c'est que la fondation ne se limite qu'à fournir les sources, le binaire et la doc (+/- laconique selon les produits). Il n'y a jamais les paquets pour les distrib ou a minima des instructions claires d'intégration, donc l'intégration se fait souvent à l'arrache c-a-d en root, sauf pour les trucs vraiment connus type httpd qui sont maintenus côté distrib.

Je ne compte plus le nombre de fois où j'ai vu du ambari (et hadoop en général), cassandra, kafka, solr, zookeeper etc. tourner en root. (et accessoirement jamais mis à jour).
Modifié le 04/10/2024 à 17h04

Historique des modifications :

Posté le 04/10/2024 à 17h04


Je parie un billet que c'est encore un service qui tourne généralement en root.
Cela dit, le truc chiant avec les produits Apache c'est que la fondation ne se limite qu'à fournir les sources, le binaire et la doc (+/- laconique selon les produits). Il n'y a jamais les paquets pour les distrib ou a minima des instructions claires d'intégration, donc l'intégration se fait souvent à l'arrache c-a-d en root, sauf pour les trucs vraiment connus type httpd qui sont maintenus côté distrib.

Je ne compte plus le nombre de fois où j'ai vu du ambari (et hadoop en général), cassandra, kafka, solr, zookeeper etc. tourner en root. (et accessoirement jamais mis à jour).

J'avoue que la vérole est bien velue. Merci pour la news.

Même question que mon vdd, comment elle s'installe ?
Modifié le 04/10/2024 à 13h30

Historique des modifications :

Posté le 04/10/2024 à 13h30


J'avoue que la vérole est bien velue. Merci pour la news.

Même question que mon vdd, comment elle s'installe ?

En relisant l'article et en diagonale le billet d'Aqua Security, j'ai l'impression que la piste privilégiée est bien celle des services vulnérables exposés. Ici avec l'exemple d'Apache RocketMQ.

Service qui tourne avec privilèges, utilisation d'une faille qui fait une escalade et kaboom. Je pense qu'avec du hardening (cf les différentes actions non exhaustives que je listais) les risques peuvent être déjà un peu plus mitigés.
Bon, il suffit de garder une session ssh ouverte et la bête reste endormie :D
Excellent idée, j'ouvres immédiatement mon Shell in a Box !
Il n'y a pas une AI pour transformer le beau graphique Aqua Security des fichiers connu en script de recherche de leur présence ?
Modifié le 04/10/2024 à 13h53

Historique des modifications :

Posté le 04/10/2024 à 13h50


Il n'y
a pas une AI pour transformer le beau graphique Aqua Security des fichiers connu en script de recherche de leur présence ?

migrons tous sous openBSD, haiku ou d'autres unix indépendants.. problème résolu :D
ou Windows.

Crowdstrike nous protégera en enfermant le PC dans une boucle spatio-temporelle de reboots infinie :D
Fermer